﻿package string;

public class 字符串中数字字串求和 {
	/**
	 * 符号可以负负得正 连续的数字可以计算成一个数
	 * 
	 * @param str
	 * @param mode
	 * @return
	 */

	public static int allNum(String str, int mode) {
		if (str == null)
			return 0;
		char[] chr = str.toCharArray();
		int sum = 0;
		int num = 0;
		boolean posi = true;
		int cur = 0;
		for (int i = 0; i < chr.length; i++) {
			// 如果不是数字，则需要判断其是不是符号
			cur = chr[i] - '0';
			if (chr[i] < '0' || chr[i] > '9') {
				sum += num;
				num = 0;
				if (chr[i] == '-') {
					if (i - 1 > -1 && chr[i - 1] == '-') {
						posi = !posi;
					} else {
						posi = false;
					}
				}
				// 如果不是-也不是数字，则重新寻找下一次的数字和符号
				else {
					posi = true;
				}
			} else {
				num = num * 10 + (posi ? cur : -cur);
			}
		}
		sum += num;
		return sum;
	}

	public static void main(String[] args) {
		System.out.println(allNum("A-1B--2C--D655555", 1));
	}
}
